package org.cskt.sl.sys.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.cskt.sl.sys.entity.Goods;
import org.cskt.sl.sys.example.GoodsExample;

public interface GoodsMapper {
	/**
	 * 查询商品数量，用于分页
	 * @param example
	 * @return
	 */
    int countByExample(@Param("example")GoodsExample example);
    /**
     * 批量删除商品
     * @param example
     * @return
     */
    int deleteByExample(@Param("example")GoodsExample example);
    /**
     * 根据主键删除商品
     * @param gid
     * @return
     */
    int deleteByPrimaryKey(Integer gid);
    /**
     * 新增商品信息（完全新增）
     * @param record
     * @return
     */
    int insert(Goods record);
    /**
     * 新增商品信息（根据字段非空动态新增）
     * @param record
     * @return
     */
    int insertSelective(Goods record);
    /**
     * 根据条件过滤商品结果并分页
     * @param example
     * @param firstResult
     * @param maxResult
     * @return
     */
    List<Goods> selectByExample(GoodsExample example,@Param("first")int firstResult,@Param("max") int maxResult);
    /**
     * 根据主键查询商品
     * @param gid
     * @return
     */
    Goods selectByPrimaryKey(Integer gid);
    /**
     * 根据条件 根据条件批量更新商品信息(根据是否为空动态更新)
     * @param record
     * @param example
     * @return
     */
    int updateByExampleSelective(@Param("record") Goods record, @Param("example") GoodsExample example);
	/**
	 * 根据条件 根据条件批量更新商品信息(完全的更新)
	 * @param record
	 * @param example
	 * @return
	 */
    int updateByExample(@Param("record") Goods record, @Param("example") GoodsExample example);
    /**
     * 根据主键 更新单个商品信息(根据是否为空动态更新)
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(Goods record);
    /**
     * 根据主键 更新单个商品信息(完全更新)
     * @param record
     * @return
     */
    int updateByPrimaryKey(Goods record);
}